package com.rui.factory.simple.main;

import com.rui.factory.obj.Coffee;
import com.rui.factory.simple.model.CoffeeFactory;
import com.rui.factory.obj.Mocha;

/**
 * 简单工厂模式
 * <p>
 * 适用场景：
 * 工厂类负责创建的对象较少。
 * 客户端只需要传入工厂类的参数，对于如何创建的对象的逻辑不需要关心。
 * <p>
 * 优点：
 * 只需要传入一个正确的参数，就可以获取你所需要的对象，无须知道创建的细节。
 * <p>
 * 缺点：
 * 工厂类的职责相对过重，增加新的产品类型的时需要修改工厂类的判断逻辑，违背了开闭原则。
 * 不易于扩展过于复杂的产品结构。
 *
 * @author ZhangRui
 * @date 2023/03/02 13:09
 **/
public class SimpleFactoryMain {


    public static void main(String[] args) throws Exception {

        Coffee coffee = CoffeeFactory.create("americano");
        coffee.taste();

        Coffee americano = CoffeeFactory.create(Mocha.class);
        americano.taste();
    }

}
